package com.raymond.util;

import com.raymond.entity.commons.BaseEntity;

import java.util.Date;
import java.util.Objects;

/**
 * desc-基础信息设置工具类
 *
 * @author houmenghe
 * @date 2025/04/21 17:32
 **/
public class BaseEntityUtil {

    private BaseEntityUtil() {
    }

    /**
     * 设置mock新增人、编辑人信息
     *
     * @param entity entity
     */
    public static void buildMockUserInfo(BaseEntity entity) {
        long mockUserSysNo = BusinessIdGenerateUtil.getSnowId();
        String mockUserName = ChineseNameGenerator.generate();

        entity.setInUserSysNo(mockUserSysNo);
        entity.setInUserName(mockUserName);
        entity.setInDate(new Date());

        entity.setEditUserSysNo(mockUserSysNo);
        entity.setEditUserName(mockUserName);
        entity.setEditDate(new Date());
    }

    /**
     * 设置系统新增人、编辑人信息
     *
     * @param entity entity
     */
    public static void buildSystemUserInfo(BaseEntity entity) {
        long systemUserSysNo = 888L;
        String systemUserName = "系统";

        entity.setInUserSysNo(systemUserSysNo);
        entity.setInUserName(systemUserName);
        entity.setInDate(new Date());

        entity.setEditUserSysNo(systemUserSysNo);
        entity.setEditUserName(systemUserName);
        entity.setEditDate(new Date());
    }

    /**
     * 从src 复制 新增人、编辑人信息 到dst
     *
     * @param src 来源
     * @param dst 目的
     */
    public static void fillUserInfo(BaseEntity src, BaseEntity dst) {
        if (Objects.isNull(src) || Objects.isNull(dst)) {
            return;
        }
        dst.setInUserSysNo(src.getInUserSysNo());
        dst.setInUserName(src.getInUserName());
        dst.setInDate(src.getInDate());

        dst.setEditUserSysNo(src.getEditUserSysNo());
        dst.setEditUserName(src.getEditUserName());
        dst.setEditDate(src.getEditDate());
    }

    /**
     * 从src 复制 新增人信息 到dst
     *
     * @param src 来源
     * @param dst 目的
     */
    public static void fillInUserInfo(BaseEntity src, BaseEntity dst) {
        if (Objects.isNull(src) || Objects.isNull(dst)) {
            return;
        }
        dst.setInUserSysNo(src.getInUserSysNo());
        dst.setInUserName(src.getInUserName());
        dst.setInDate(src.getInDate());
    }

    /**
     * 从src 复制 编辑人信息 到dst
     *
     * @param src 来源
     * @param dst 目的
     */
    public static void fillEditUserInfo(BaseEntity src, BaseEntity dst) {
        if (Objects.isNull(src) || Objects.isNull(dst)) {
            return;
        }

        dst.setEditUserSysNo(src.getEditUserSysNo());
        dst.setEditUserName(src.getEditUserName());
        dst.setEditDate(src.getEditDate());
    }
}
